As an application executes on a computing system, when data of a particular type is to be utilized by the application, the application will cause the operating system to allocate memory that is of sufficient size and structure for the data of that type. Ideally, when the application is done with the data, the program can cause the operating system to release the memory. However, the application itself often does not release the memory. Over time, this results in a large quantity of the memory being allocated for data that is not going to be used further by the application.
In order to avoid this unwanted accumulation in memory being allocated to unused data (called “dead memory”), various background garbage collection applications may seek out such dead memory, and release the memory for further use by the operating system. In order to assist garbage collection applications, during compilation of a subject application that is to allocate memory, the compiler will generate garbage collection information representing dead memory locations that the subject application has failed to release after the corresponding data is no longer to be used.